// Loesung_von_Aufgabe_2.4.5_3_Wettlauf

/* Igel Erich hat eine Winkelgeschwindigkeit von 0,6 rad/s.
 Bei einer Bildwiederholungsrate von 600 Bildern pro Sekunde 
 ergibt sich für jeden Durchlauf von void draw() ein 
 Winkelzuwachs von 0,001. 
 */

float wE = 0; // Winkel Erich
float wH = 0; // Winkel Heinz
float tE; // Zeit Erich
float tH; // Zeit Heinz

void setup()
{
  size(400, 400);
}

void draw()
{
  background(0, 130, 0);
  translate(200, 200);
  frameRate(600);
  tE = tE + 1/frameRate;

  // Laufbahn
  stroke(170, 100, 100);
  strokeWeight(20);
  fill(0, 130, 0);
  ellipse(0, 0, 300, 300); 

  // Hase Heinz steht neben der Laufbahn
  if (wE < PI)
  {
    noStroke();
    fill(255, 0, 0);
    ellipse(170, 0, 15, 15);
  }

  pushMatrix(); // Speichert die Transformation und die Laufbahn

  // Igel Erich
  wE = wE + 0.001;
  rotate(wE);
  noStroke();
  fill(0, 0, 255);
  ellipse(150, 0, 15, 15);

  popMatrix(); /* Lädt die oben gespeicherte Transformation wieder. Somit addiert sich die folgende 
   Rotation nicht zur obigen Rotation */

  pushMatrix();
  if (wE >= PI)
  {
    // Hase Heinz
    wH = wH + 1.4 * 0.001;
    rotate(wH);
    noStroke();
    fill(255, 0, 0);
    ellipse(150, 0, 15, 15);
  }
  popMatrix();

  if (wH >= wE)
  {
    /* Bevor Hase Heinz startet, hat Igel Erich einen Winkel von PI zurückgelegt.
     Hierzu benötigt Erich die Zeit t = Winkel/Winkelgeschwindigkeit von Erich = PI/0.6
     */
    tH = tE - PI/0.6;
    println("tE = " +tE, "tH = " +tH);
    noLoop();
  }
}